package com.health.ts.exception;

import com.health.ts.constant.ResultCodeEnum;

/**
 * 系统业务异常
 */
public class BusinessException extends RuntimeException {
	
	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 8854303091138925026L;
	
	/** 
	 * 异常代码 
	 */
	private String code;

	/**
	 *  支持统一业务处理的异常类  
	 * @param message 异常消息信息
	 */
    public BusinessException(String message){
        this(ResultCodeEnum.BUSINESS_FAILED.value(), message);
    }
    
	/**
	 *  支持统一业务处理的异常类  
	 * @param code    错误代码
	 * @param message 异常消息信息
	 */
    public BusinessException(String code, String message){
        super(message);
    	this.code = code;
    }
    
	public String getCode() {
		return code;
	}
	
	/**
	 * 重写 fillInStackTrace 去除业务异常堆栈信息，提高性能
	 * 业务逻辑异常是可预料异常范围，不需要堆栈信息，堆栈信息会大大提高系统开销，影响系统性能
	 */
	@Override
	public Throwable fillInStackTrace() {
		return this;
	}
}
